package org.sean.framework.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 方法
 *
 * @author xielei
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface SyncMethod {

    /**
     * @return 同步key 有效期
     */
    int expire() default SyncConstants.EXPIRE;

    /**
     * @return 同步超时时间
     */
    int timeout() default SyncConstants.TIMEOUT;

    /**
     * @return 超时后是否抛出异常
     */
    boolean timeoutException() default SyncConstants.TIMEOUT_EXCEPTION;

    /**
     * @return 超时后是否返回, 优先于 timeoutException
     */
    boolean timeoutReturn() default SyncConstants.TIMEOUT_RETURN;

    /**
     * @return 忽略执行 false : 不等待略过本次执行
     */
    boolean ignore() default false;
}
